Group 1.png

Miembros

Objetivo del proyecto

El objetivo final de este proyecto es poder estimar el volumen de una botella de coca cola de 355 ml retornable solamente tomando muestras del diámetro de la misma

1.1 Como se calcula el volumen

Antes de empezar a calcular volúmenes de sólidos de revolución es pertinente reflexionar un poco sobre como calculamos el volumen en primer lugar, y que es lo que volumen significa.

1.2 Volumen

1.2.1 El desarrollo de la noción de volumen

El volumen surge antes de todo desarrollo matemático como una magnitud de interés no solo en la física elemental, sino también para casi toda actividad humana. En todo momento interactuamos con objetos en nuestro espacio, que tienen volumen, tienen un contorno y un interior que no puede ser ocupado por ninguna otra cosa. El interés en la formulación de métodos para calcular esta magnitud es de evidente importancia para ramas como la ingeniería, la física, la Arquitectura o incluso la logística. No obstante en la antigüedad este desarrollo siempre se vería opacado por el desarrollo de la matemática de la geometría bidimensional y el cálculo de Áreas por parte de los griegos, que para sorpresa de nadie se trata del volumen (medida) en un espacio de una dimensión menor.

Una excepción más que destacable de esta tendencia y fascinación griega por las figuras planas es Arquímedes. Que se destacó por sus descubrimientos de las relaciones entre volúmenes de diferentes cuerpos, como mejor ejemplo el descubrimiento de que el volumen de la esfera es la del cilindro en el que está inscrito. Este descubrimiento le fascinaba tanto a Arquímedes que se tallaría en su tumba a su petición. Todos estos descubrimientos fueron hechos a través de su famoso método de exacción que en su formulación yace la idea esencial del cálculo integral y los infinitesimales.

Otro importante avance en la caracterización rigurosa de la noción de volumen fue dada por Buenaventura Cavalieri, que bajo su principio estableció que

No obstante las matemáticas no acatarían la noción de volumen hasta la formulación de la teoría de la medida. Esta teoría generaliza la noción de volumen para espacios y conjuntos en dimensiones superiores. La naturaleza de esta teoría es más del interés del análisis y la topología que de la de la geometría, no obstante resulta útil para la comprensión de nuestro cometido, pues enlaza de manera general la noción de integral con la de volumen o medida.

"La noción de medida es una generalización de las ideas de longitud, área o volumen. Como veremos, toda medida lleva además aparejada una correspondiente noción de Integral."

Para entender como es que se calcula el volumen de cuerpos tridimensionales con herramientas de cálculo de una variable es importante también entender la aparente paradoja de la situación. Queremos calcular el volumen de un cuerpo de 3 dimensiones midiendo una superficie de dos dimensiones.

2 Obteniendo el volumen de la botella

2.1 Tomando puntos de muestreo de la botella

Este paso consiste en obtener la materia prima con la que estaremos trabajando, a partir los resultados siguientes del proyecto se derivan de estos datos.

Estos datos toman la forma de dos sucesiones y de donde es el largo de la botella a partir del cuello y es el radio de la botella en

Apartir de aqui a los puntos se les denominara nodos

2.1.1 Procedimiento

Se desean obtener los nodos a partir de una botella de coca cola retornable de 355 ml

Pasted image 20250420133506.png

La idea es sencilla, por la forma en la que se calcula el volumen del sólido de revolución con el método de discos necesitamos que nuestro integrando sea una función que nos devuelva el radio de la botella a lo largo de longitud de la botella.

Entonces con ayuda de un bernier y una cinta métrica medimos el diámetro de la botella a lo largo de 24 nodos equidistantes por 1 cm, y a través de la relación del radio de la circunferencia con su diámetro se obtuvo cada punto

Se obtuvieron los siguientes datos.

i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
yᵢ 1.4 1.3 1.25 1.35 1.45 1.65 1.95 2.35 2.55 2.75 2.89 3.0 3.05 3.1 3.13 3.05 2.9 2.8 2.7 2.6 2.55 2.7 3.05 3.15 2.85
xᵢ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24.5

Graficando se confirma efectivamente asemejan la silueta de la botella partida a la mitad.

Pasted image 20250427213807.png

2.2 Ajustando curva a los nodos

El siguiente paso es poder encontrar una curva que se asemeje a la de la botella. Debido a que se cuenta con una cantidad relativamente generosa de nodos, el primer método que intentamos es el de interpolación.

2.2.1 Teorema de aproximación de Weirstrass

Si en lugar de contar con un número finito de nodos tuviéramos la curva exacta de la silueta de la coca-cola podría parecer que todo sería más sencillo, integraríamos dicha función y listo no es así? En realidad no es tan sencillo, si tuviéramos la función exacta de la silueta de la botella lo más probable es de que su expresión sería absurdamente complicada o de lleno no podría ser escrita como una composición de funciones básicas como son las funciones polinómicas, radicales, racionales o las trascendentales, es decir estaríamos ante una función no elemental.

No obstante eso no es limitante para encontrar una función sencilla que nos sea útil y que se parezca mucho

§ó

sea una función continua, entonces existe una sucesión de polinomios tal que converge uniformemente a , o dicho de otra forma

Una consecuencia directa de este teorema es la de que nos podemos acercar a cualquier función continua en un intervalo cerrado de forma arbitraria. Gracias a este teorema sabemos que sin importar que tan pronunciada o complicada pueda ser la curva de una función continua, podemos aproximarnos a dicha función cuanto queramos con un polinomio. Esto es porque los polinomios son densos en el espacio .

2.2.2 Interpolación (Opcion 1)

Interpolar quiere decir que para nuestros nodos buscamos encontrar una función tal que . Debido a las bondades de los polinomios, en especial a la hora de la integración, buscamos que nuestra función interpoladora sea un polinomio.

2.2.2.2 Polinomios interpoladores del grado mínimo

Los dos métodos más sencillos de entender para construir un polinomio son los polinomios de Lagrange o plantear una matriz de Vandermonde

Estos dos procedimientos son equivalentes, y de forma simbólica producen el mismo resultado. Un polinomio (con grado menor o igual a ).

Esto es una consecuencia del siguiente teorema

§

dada la sucesion de nodos con existe un único polinomio de grado menor o igual a tal que ,

Demostración

si existe entonces se tiene que

de donde se tiene la matriz característica

y el vector de resultados

entonces de nuestro sistema de ecuaciones inicial tenemos

En orden para que el postulado del teorema se cumpla se necesita que el sistema tenga una única solución, es decir .

Supongamos que esto implica que las columnas de la matriz no son linealmente independientes. Esto se puede expresar de la siguiente manera.

Sea

donde edos espacio de combinaciones lineales de los vectores


Para demostrar que los vectores sean linealmente independientes basta con demostrar que implica que que a su vez implica el postulado del teorema 2.2

se desea entonces demostrar que

supongamos que

entonces tal que

Igualando las sumas de los componentes se obtiene un polinomio de grado que satisface que:

Por el Teorema fundamental del álgebra un polinomio de grado tiene a lo sumo raíces.

En el mejor de los casos , no obstante el polinomio tiene raíces, lo que es una contradicción con el Teorema fundamental del álgebra, por lo tanto,

es una contradicción con el teorema fundamental del álgebra y Con esto queda demostrado que

Y que toda la columna de la matriz por definición tienen que ser linealmente independiente a las columnas . Por lo tanto, y el sistema tiene solución única. Demostrando así el teorema 2.2

2.2.2.3 Polinomios de Lagrange

se define

un polinomio de grado con sus raíces en si

además

Definiendo

es el polinomio de grado menor o igual a que interpola en la sucesión de nodos

Procedimiento

para encontrar el polinomio de Lagrange dada por la sucesión de nodos, podemos utilizar el siguiente código

import scipy as sc

poly = sc.interpolate.lagrange(x_i,y_i)

que nos regresa una instancia de la clase polynomial que es nuestra función.Graficando el polinomio se tiene el siguiente ajuste.

Pasted image 20250427213735.png

El ajuste en general no es bueno, y partir de ciertos nodos el polinomio parece que ya no interpola los nodos correspondientes. La hipótesis es que coeficientes del polinomio no pueden ser obtenidos correctamente por el procedimiento previo debido a las limitaciones que tienen las computadoras con las operaciones de punto flotante. Lo que provoca que el polinomio devuelto por la función sea diferente al verdadero polinomio de Lagrange.

Otra razón por la cual podríamos estar ocurriendo esto es por la elección de nodos y el número de nodos. Al tener 25 nodos de interpolación el polinomio resultante es de grado 25, lo que causa que pueda crecer o decrecer muy rápido en intervalos pequeños. En cuanto la elección de nodos si los nodos son equidistantes el efecto runge sé magnífica.

Efecto runge

El efecto runge es un fenómeno común cuando se hace aproximación por polinomios y nuestro polinomio tiene un grado elevado. Lo que resulta en oscilaciones en los extremos del intervalo de interpolación.

Existen varias alternativas para poder obtener un mejor ajuste, el primero sería utilizar una cantidad menor de nodos. El segundo es que en lugar de tomar las muestras equidistantes, tomar más muestras en los bordes del intervalo, esto ayuda a minimizar las oscilaciones. Un criterio Formal para la elección de estos puntos es usar los nodos de chebyshev, que son las raíces de los polinomios de chebyshev de primera especie. De forma más especifica para la eleccion de los nodos elegimos para los valores de las raíces del polinomio

Los polinomios de chebyshev de primera especie se definen de la siguiente manera:

Que con ayuda de identidades trigonométricas pueden ser definidos de manera recursiva.

y dado que y podemos llegar expresar como un polinomio.

Nota: es una función que está definida solamente en y su imagen es es decir que está restringida. No obstante, cuando se expande a en su forma polinómica, esta restricción desaparece. son funciones con distintas con dominio e imagen diferentes con la peculiaridad de que mapean a los mismos valores en

2.2.3 Ajuste por mínimos cuadrados OLS (opción 2)

Nuestro siguiente intento fue obtener nuestro polinomio a través del método de mínimos cuadrados. Este procedimiento es fundamentalmente diferente en cuestión de cuáles y como son los elementos e hiperparámetros con el que el investigador puede experimentar y que evidentemente producen resultados fundamentalmente distintos al de los polinomios de Lagrange.

En el ajuste de polinomios por mínimos cuadrados se escoge primero el grado del polinomio que queremos que aproxime los nodos. Si elegimos un polinomio de grado tendremos coeficientes y al igual que en él procedimento anterior, nuestra tarea es encontrar la mejor elección de .

La nos permite explorar el espacio y comparar sus valores en y apartir de ahi ver si la funcion nos es de utilidad.

Pasted image 20250426210948.png

La figura anterior ejemplifica el espacio y sus elementos tienen diferentes errores respecto a los nodos

Se denomina Error cuadrado y es una funcion dependiente de . La mejor o las mejores elecciones de estos valores ocurre cuando se minimiza . Es decir que estamos ante un problema de optimizacion.

Minimizar una funcion de varias variables

Pasted image 20250426212345.png

los minimos locales de una funcion de varias variables se encuentran en aquellos puntos ta que el gradiente de la funcion es el vector nulo

es una funcion vectorial que devuelve un vector cuya direccion nos indica hacia donde movernos en el espacio de tal forma que el valor de aumente lo mas posible en ese punto. Otra interpretacion es que el vector gradiente tiene la misma direccion a la del plano tangente a en ese punto. Similar a la recta tangente al punto en una variable

Es decir que el vale lo mismo 0 en los máximos y mínimos locales, además de en una clase de puntos denominados puntos silla. El vector gradiente se define como

Minimizando

Regresando a la función

Se tiene que cumplir que con

buscamos encontrar la derivada repecto a las variables de las que depende . vamos termino por termino

  1. no tiene por ninguna parte, por lo que es constante respecto a esta variable

  1. Para el segundo termino podemos hacer uso de los corchetes de iverson para simplificar un poco la notacion a fin de hacerlo un poco mas entendible.

los corchetes son una propocision logica que debe de ser verdadera en cada iteracion. Es decir. Sino se cumple la condicion no se suma nada. una sola vez durante todo el ciclo de . Es decir que el resto de iteraciones el termino es constante respecto a . Por lo que se puede quitar la sumatoria y sustituir por

3.

al igual que en el caso anterior cuando la sumatoria con indice se anula y queda solo , pasa exactamente lo mismo cuando . Por lo tanto hay veces en las que solo queda y veces en las que queda pero estas dos son exactamente la misma suma por lo que tenemos al final

alch esta parte esta confusa

- es un valor conocido por lo que lo podemos pasar al otro lado de la igualdad

Dando valores a se llega a un sistema de ecuaciones con variables

El demostrar que el determinante de esta matriz es 0 es a su vez demostrar que existe un unico punto critico cuyo procedimiento queda fuera del dominio de este travajo (me quede sin tiempo xd).

Y una vez obtenido dicho punto se puede evaluar en la matriz Heissiana , obtener el determinante y usarlo como discriminante por el criterio de la segunda derivada parcial para demostrar que efectivamente el punto es un minimo local.

Procedimiento

para encontrar el polinomio de Lagrange dada por la sucesión de nodos, podemos utilizar el siguiente código

from numpy.polynomial.polynomial import Polynomial

poly_ols = Polynomial.fit(x_sample,y_sample,deg=26)

poly_ols.convert().coef[::-1]

que nos devuelve una clase polinomio que contiene los coeficientes de nuestro interes.

Grafcando el polinomio se obtuvo

Pasted image 20250427121518.png

un ajuste mucho mas adecuado

Coeficientes

Lagrange vs OLS

Comparando los residuales se obtuvo una diferencia abrumadora en el error.

Pasted image 20250427122552.png

Se sospecha que esta diferencia en el error es causada por el limite de la representacion de los decimales que tienen las computadoras. Esto debido a que teoricamente el polinomio de Lagrange deberia de tener error 0 al pasar por cada uno de los puntos. No obstante seguiria siendo un polinomio altamente inestable por ser de un grado elevado.

Por otro lado con minimos cuadrados nosotros somos capaces de elegir el grado del polinomio y poder llegar asi a curvas mucho mas estables y suaves que nos generan sobre todo un mejor resultado.

Integracion numerica

Una vez obtenido la funcion que modela la silueta de la botella toca calcular el volumen atraves de los metodos de integracion discutidos previamente

Los polinomios tienen la virtud de ser bastante sencillos de integrar de forma simbolica. Ese no sera el procedimiento que usaremos nosotros.

Regla del trapecio

Intuicion del metodo de integracion numerica

Para entender de forma intuitiva la construccion de este metodo es pertinente revisitar la construccion informal de las sumas de Riemman.

donde y se sabe que conforme .

Geometricamente lo que esto quiere decir es que la serie de las areas de los rectangulos de ancho y altura converge al area total bajo la curva conforme se usan mas rectangulos.

Evidentemente trabajando con computadoras no podemos realizar un calculo o tarea un numero infinito de veces pero podemos hacerla un numero de veces suficientes para que la aproximacion sea satisfactoria. Pero tambien buscamos que el trabajo computacional invertido sea invertido de manera eficiente. Esto lo logramos realizando optimizaciones para minimizar el error en las sumas finitas. como por ejemplo cambiando los rctangulos por trapecios

entonces si deseamos aproximar de una mejor manera el area bajo la curva de reformulamos las sumas de riemman para sumar areas de trapecios en lugar de rectangulos.

El area del trapecio se obtiene de la siguiente manera

de donde es el largo del trapecio y las alturas de los trapecios

Procedimiento

para aproximar el volumen del solido de revolucion se tiene que aproximar

se desea dividir el intervalo en 10000 partes para calcular el area de 10000 trapecios

Donde es sucesion de los volumenes de los trapecios apartir del punto .

El volumen total del solido de revolucion es finalmente

Nota: se uso dentro de la formula del trapecio en lugar de porque la serie esta definida en principio hasta . Esto se escribio asi de forma que reflejara la forma exacta en la que el codigo fue implementado

Codigo
Polinomio
use std::f64::consts::PI;

// Polinomio aproximador
fn p(x: f64) -> f64 {
    4.852272763781776e-11_f64 * x.powi(9)
    - 2.1769207076913663e-08_f64 * x.powi(8)
    + 1.76279592469982e-06_f64 * x.powi(7)
    - 6.344035947156883e-05_f64 * x.powi(6)
    + 0.0012285008019216523_f64 * x.powi(5)
    - 0.013329090419386656_f64 * x.powi(4)
    + 0.074970254828055_f64 * x.powi(3)
    - 0.15346857576947837_f64 * x.powi(2)
    + 0.026690674027164477_f64 * x
    + 1.3909550029629412_f64
    + - 0.4 // Ajuste por el grosor aproximado de la botella
}
Funcion area trapecio
fn area_trapecio(x1: f64, x2: f64, dx: f64, f: impl Fn(f64) -> f64) -> f64 {
    dx * (f(x1) + f(x2)) / 2.
}
Logica principal
fn main() {
	// Constantes
    let a = 0.0;
    let b = 24.5;
    let n = 10000;
    let dx = (b - a) / n as f64;

	// Integración
    let volumen = (0..n)
        .map(|i| a + i as f64 * dx)
        .map(|xi| area_trapecio(xi, xi + dx, dx,|x| p(x).powi(2)))
        .sum::<f64>() * PI;
    
    println!("El volumen del solido de revolucion es aproximadamente {}", volumen);
}

La lógica de este programa se implementó en el lenguaje de programación Rust por sus características funcionales que vienen de serie. La programacion funcional es un paradigma de programacion donde se evita el uso de ciclos for y la modificacion del estado interno de un programa. Este estilo de programacion nos permite mapear colecciones a colecciones sin necesidad de recorrer cada lista. Lo que da lugar a soluciones que pueden parecer un poco confusas en primer lugar, pero que en realidad son mas elegantes y sencillas.

lo que hace la linea despues de //Integracion es en esencia los siguientes mapeos

i=0;1;:::;n¡1xiAiVa+i¢xh2P(xi)+P(xix)¼PAi""

Resultados

En primera instancia el volumen aproximado no fue bueno. Alrededor de 511 ml. Se presume que el grosor de la botella es de alrededor de 4 mm por lo que basto con integrar para llegar a una aaproximaciónmucho mas razonable de 369 mm, mucho mas cerca de los 355 ml mas el volumen de cuello de la botella

Pasted image 20250427205723.png


Bibliografia